#define _CRT_SECURE_NO_WARNINGS 1


//#include <stdio.h>
//
//int main()
//{
//	int a = /*hehe*/10;
//	printf("a=%d\n", a);
//
//	return 0;
//}


//35(k) - 5(a) * 7(i)
//35(k) - 7(b) * 5(j)
//#include <stdio.h>
//
//int main()
//{
//	long long a = 0;
//	long long b = 0;
//	scanf("%lld %lld", &a, &b);
//	int i = 1;
//
//	while (a * i % b)
//	{
//		i++;
//	}
//
//	printf("%lld\n", a * i);
//
//	return 0;
//}



#include <stdio.h>
#include <string.h>

//函数逆序字符串
void reverse(char* left, char* right)
{
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

int main()
{
	char arr[101];
	//scanf("%s", arr);
	//gets(arr);//读取一个字符串，即使中间有空格，但是现在大多数编译器会报错，因为不安全
	//fgets(arr, 100, stdin);//cpp上可以查到这个函数  stdin 标准输入 - 键盘
	scanf("%[^\n]s", arr);
	int len = strlen(arr);
	reverse(arr, arr + len - 1);
	//逆序每个单词
	char* start = arr;
	char* cur = arr;

	while (*cur)
	{
		
		while (*cur != ' ' && *cur != '\0')
		{
			cur++;
		}

		reverse(start, cur - 1);
		start = cur + 1;

		if (' ' == *cur)
		{
			cur++;
		}
		
	}

	printf("%s\n", arr);

	return 0;
}